]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensions-tool: Add option to list updates
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 30 Nov 2019 18:52:42 +0000 (19:52 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 10 Feb 2020 22:43:00 +0000 (22:43 +0000)
Now that we support extension updates, it may be useful to list
pending updates from the command line. It's easy enough to support,
so add a corresponding option to the list command.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/988

subprojects/extensions-tool/man/gnome-extensions.txt
subprojects/extensions-tool/src/command-list.c

index c04b37174c499d1a6d406d75cd580663d7f3e2c1..125c9b82ce7a8cca880e06e2ba94cccba95b029c 100644 (file)
@@ -96,6 +96,9 @@ Displays a list of installed extensions.
   *--prefs*;;
     Only include extensions with preferences
 
+  *--updates*;;
+    Only include extensions with pending updates
+
   *-d*;;
   *--details*;;
     Show some extra information for each extension
index b5cee59230a58aba94809a324550c6248e9f4c24..f92dafa4eebdc2a37e37341ef85680de3b2cbea3 100644 (file)
@@ -32,7 +32,8 @@ typedef enum {
   LIST_FLAGS_SYSTEM   = 1 << 1,
   LIST_FLAGS_ENABLED  = 1 << 2,
   LIST_FLAGS_DISABLED = 1 << 3,
-  LIST_FLAGS_NO_PREFS = 1 << 4
+  LIST_FLAGS_NO_PREFS = 1 << 4,
+  LIST_FLAGS_NO_UPDATES = 1 << 5,
 } ListFilterFlags;
 
 static gboolean
@@ -69,11 +70,13 @@ list_extensions (ListFilterFlags filter, DisplayFormat format)
       g_autoptr (GVariantDict) info = NULL;
       double type, state;
       gboolean has_prefs;
+      gboolean has_update;
 
       info = g_variant_dict_new (value);
       g_variant_dict_lookup (info, "type", "d", &type);
       g_variant_dict_lookup (info, "state", "d", &state);
       g_variant_dict_lookup (info, "hasPrefs", "b", &has_prefs);
+      g_variant_dict_lookup (info, "hasUpdate", "b", &has_update);
 
       if (type == TYPE_USER && (filter & LIST_FLAGS_USER) == 0)
         continue;
@@ -90,6 +93,9 @@ list_extensions (ListFilterFlags filter, DisplayFormat format)
       if (!has_prefs && (filter & LIST_FLAGS_NO_PREFS) == 0)
         continue;
 
+      if (!has_update && (filter & LIST_FLAGS_NO_UPDATES) == 0)
+        continue;
+
       if (needs_newline)
         g_print ("\n");
 
@@ -112,6 +118,7 @@ handle_list (int argc, char *argv[], gboolean do_help)
   gboolean enabled = FALSE;
   gboolean disabled = FALSE;
   gboolean has_prefs = FALSE;
+  gboolean has_updates = FALSE;
   GOptionEntry entries[] = {
     { .long_name = "user",
       .arg = G_OPTION_ARG_NONE, .arg_data = &user,
@@ -128,6 +135,9 @@ handle_list (int argc, char *argv[], gboolean do_help)
     { .long_name = "prefs",
       .arg = G_OPTION_ARG_NONE, .arg_data = &has_prefs,
       .description = _("Show extensions with preferences") },
+    { .long_name = "updates",
+      .arg = G_OPTION_ARG_NONE, .arg_data = &has_updates,
+      .description = _("Show extensions with updates") },
     { .long_name = "details", .short_name = 'd',
       .arg = G_OPTION_ARG_NONE, .arg_data = &details,
       .description = _("Print extension details") },
@@ -174,6 +184,9 @@ handle_list (int argc, char *argv[], gboolean do_help)
   if (!has_prefs)
     flags |= LIST_FLAGS_NO_PREFS;
 
+  if (!has_updates)
+    flags |= LIST_FLAGS_NO_UPDATES;
+
   return list_extensions (flags, details ? DISPLAY_DETAILED
                                          : DISPLAY_ONELINE) ? 0 : 2;
 }